#ifndef __FRAME_BEHAVIOUR_H__
#define __FRAME_BEHAVIOUR_H__

#include "stdfx.h"

//  i really need make this define in some global scope
#define PINS_COUNT 10
class Frame;
class FrameBehaviour
{
public:
    FrameBehaviour();
    virtual ~FrameBehaviour();
    
    bool isDone() const;
    virtual bool isNeedRenewPins() const;
    //virtual void fired(int knockedPinCount, int pinsLeft, int throwCount) = 0;
    virtual void fired(Frame* frame, int knockedPinCount) = 0;
    
protected:
    bool _isDone;    
};

class FrameBehaviourSimple : public FrameBehaviour
{
public:
    virtual void fired(Frame* frame, int knockedPinCount);
};

class FrameBehaviourLast : public FrameBehaviour
{
public:
    FrameBehaviourLast();
    //virtual bool isNeedRenewPins() const;
    virtual void fired(Frame* frame, int knockedPinCount);
    
private:
    int _extraThrows;
};

#endif